package locadora.aplicacao;

import locadora.negocio.pessoas.*;
import miscelanea.Data;

public class TelaRelatorio extends Tela {

	public TelaRelatorio(Pessoa usuario) {
		super("Gereciador do sistema", usuario);
	}
	
	protected void imprimirTela() {
		while(true) {
			int opcao = -1;
			while(opcao < 0 || opcao > 4) {
				this.limpar();
				this.imprimirMensagem(this.titulo);
				this.imprimirMensagem("");
				this.imprimirMensagem("(1) Relatório de funcionários");
				this.imprimirMensagem("(2) Relatório de clientes");
				this.imprimirMensagem("(3) Relatório de itens");
				this.imprimirMensagem("(4) Relatório de itens alugados");
				this.imprimirMensagem("");
				this.imprimirMensagem("(0) Voltar");
				this.imprimirMensagem("");
				this.requisitarEntrada("Por favor, escolha uma opção.");
				try { opcao = Integer.parseInt(this.lerEntrada()); }
				catch(Exception e) { this.imprimirErro("Opção inválida!"); }
			}
			this.limpar();
			switch(opcao) {
				case 1: this.relatorioFuncionarios(); break;
				case 2: this.relatorioClientes(); break;
				case 3: this.relatorioItens(); break;
				case 4: this.relatorioItensAlugados(); break;
				case 0: return;
			}
		}
	}
	
	private void relatorioFuncionarios() {
		if(this.usuario instanceof Gerente) {
			Gerente g = (Gerente) this.usuario;
			try{ 
				String relatorio = g.gerarRelatorioFuncionarios();
				this.imprimirMensagem(relatorio);
				this.imprimirMensagem("");
				this.requisitarEntrada("Por favor, pressione ENTER para continuar...");
				this.lerEntrada();
			} catch(Exception e) { this.imprimirErro(e.getMessage()); }
		}
	}
	
	private void relatorioClientes() {
		if(this.usuario instanceof Gerente) {
			Gerente g = (Gerente) this.usuario;
			try{ 			
				String relatorio = g.gerarRelatorioClientes();
				this.imprimirMensagem(relatorio);
				this.imprimirMensagem("");
				this.requisitarEntrada("Por favor, pressione ENTER para continuar...");
				this.lerEntrada();
			} catch(Exception e) { this.imprimirErro(e.getMessage()); }
		}
	}
	
	private void relatorioItens() {
		if(this.usuario instanceof Gerente) {
			Gerente g = (Gerente) this.usuario;
			try{ 
				String relatorio = g.gerarRelatorioItens();
				this.imprimirMensagem(relatorio);
				this.imprimirMensagem("");
				this.requisitarEntrada("Por favor, pressione ENTER para continuar...");
				this.lerEntrada();
			} catch(Exception e) { this.imprimirErro(e.getMessage()); }
		}
	}
	
	private void relatorioItensAlugados() {
		if(this.usuario instanceof Gerente) {
			Data data;
			Gerente g = (Gerente) this.usuario;
			this.requisitarEntrada("Por favor, insira a data desejada (no formato ddmmyyyy).");
			try { 
				data = new Data(this.lerEntrada());
				String relatorio = g.gerarRelatorioItensAlugados(data);
				this.imprimirMensagem(relatorio);
				this.imprimirMensagem("");
				this.requisitarEntrada("Por favor, pressione ENTER para continuar...");
				this.lerEntrada();
			} 
			catch(Exception e) { 
				this.imprimirErro(e.getMessage());
				return;
			}
		}
	}
}


